In a data-storage system, data is stored in logical volumes that are divided into cylinders, each of which includes several constituent tracks. In some cases, a data error may cause data on a particular track to become invalid. Whenever a track becomes invalid, it must be marked as such, both to prevent the data-storage system from relying on any data in that track and to draw attention to that track so that the data contained therein can be corrected or replaced.
A conventional data-storage system maintains a track table in which there exists an entry for each track. Each track table entry includes an invalid bit. A set invalid bit indicates that data in the corresponding track is invalid. Conversely, a clear invalid bit indicates that data in the corresponding track is valid. In normal operation, only a few isolated track table entries have a set invalid bit; the overwhelming majority of track table entries have clear invalid bits.
A repair process executing as a background task periodically scans the track table to identify any track table entries having set invalid bits. When the repair process encounters such an entry, it initiates corrective action, the nature of which depends on details of the configuration of the data-storage system.
In another application, a data-storage system configured to mirror data uses the invalid bit to trigger a mirroring event in which data is copied from a primary storage location to a mirror device. In such a system, whenever a change is made to a track, the invalid bit for that track is set. A copy process periodically scans the track table to identify any track table entries having invalid bits. If the copy process encounters such a track table entry, it recognizes the track as having data that must be copied to the mirror device.
Since track table entries having invalid bits are so few and far between, the repair process spends an inordinate amount of its time scanning the track table looking for something to repair. This is an inefficient use of system resources. In addition, this lengthens the time during which a track holds invalid data as well as the time during which data on the primary storage location and on its mirror are different.